package com.sunxueqi.project.system.service;

import java.util.List;

import com.sunxueqi.project.system.vo.Menu;
import com.sunxueqi.project.system.vo.NaiveUIRouter;
import com.sunxueqi.project.system.vo.Router;
import com.sunxueqi.project.system.vo.User;

public interface IMenuService {
	
	/**
	 * 获取用户拥有的permissions信息
	 * @param id
	 * @return
	 */
	List<String> selectPermissionsByUser(User user);
	
	/**
	 * 根据用户ID查询菜单权限树
	 * @param id
	 * @return
	 */
	List<Menu> selectMenuTreeByUserId(String id);
	
	/**
	 * 构建前端路由需要的菜单 vue2 Element-UI用
	 * @param menus
	 * @return
	 */
	List<Router> buildMenus(List<Menu> menus);
	
	/**
	 * 构建前端路由需要的菜单 vue3 naive-ui专用
	 * @param menus
	 * @return
	 */
//	List<NaiveUIRouter> buildMenusForNaiveUI(List<Menu> menus);
	
	/**
	 * 获取所有的菜单列表
	 * @param menu
	 * @return
	 */
	List<Menu> selectMenuList(Menu menu);
	
	/**
	 * 添加菜单
	 * @param menu
	 * @return
	 */
	int add(Menu menu);

	/**
	 * 删除菜单
	 * @param idArray
	 * @return
	 */
	int deleteMenuByIds(String[] idArray);

	/**
	 * 修改菜单
	 * @param menu
	 * @return
	 */
	int updateMenu(Menu menu);

	/**
	 * 根据id获取菜单详情信息
	 * @param id
	 * @return
	 */
	Menu selectMenuById(String id);

	/**
	 * 根据角色id获取拥有的菜单
	 * @param roleId
	 * @return
	 */
	List<Menu> selectMenuListByRoleId(String roleId);
}
